pandas |
您所在的位置:网站首页 › python read csv skiprow › pandas |
pandasでcsvファイルを読み込むための関数read_csv()について解説します。 read_csv()は、引数で読み込みの細かい設定が可能です: 区切り文字の指定 indexやlabelの行や列を指定する方法 読み込む行・列の指定などについて図解付きで解説していきます! 基本的な使用方法 read_csv():csvファイルを読み込む sep, delimiter:区切り文字の指定 ヘッダー・インデックスの指定 header:ヘッダー(列名)の行を指定 names:列名を自分で設定 index_col:インデックス列の指定 読み込む行・列の指定 skiprows:読み飛ばす行を指定 skipfooter:下から数行を読み飛ばす usecols:読み込む列を指定 comment:コメント行をスキップ おわりに 基本的な使用方法 read_csv()を使用すると、csvデータからDataFrameを作成できます。 引数で細かい設定をできますが、まずは基本的な読み込み方法を確認してみましょう。 ▲目次へ戻る read_csv():csvファイルを読み込む次のcsvファイルを例に基本的な読み込み操作を解説します。 # a,b,c # 1,20,2 # 2,30,3 # 3,10,1read_csv()にcsvファイルのパスを与えると、csvからDataFrameを作成します。 import pandas as pd df = pd.read_csv("read_csv_example.csv") print(df) # a b c # 0 1 20 2 # 1 2 30 3 # 2 3 10 1デフォルトでは、 ヘッダーには、データの一行目が、 インデックスには、自動で連番が割り当てられます。 これを変更したい場合は、後述するheaderやindex_colを使用します。 ▲目次へ戻る sep, delimiter:区切り文字の指定デフォルトでは、データ間の区切り文字として,(コンマ)が使用されます。 ちなみにですが、そもそもCSVは、Comma-Separated Valuesの略です。 区切り文字を変更したい場合には、sepを明示的に指定します。 次のような/で区切られたデータを考えてみます。 # a/b/c # 1/20/2 # 2/30/3 # 3/10/1sep = "/"で、区切り文字を/に変更して読み込んでみます。 df = pd.read_csv("read_csv_example_sep.csv", sep="/") print(df) # a b c # 0 1 20 2 # 1 2 30 3 # 2 3 10 1無事に、データを分割して読み込めました。 delimiterはsepのエイリアス(別名)です。 sepの代わりにdelimiterを使用しても全く同じ結果になります。 df = pd.read_csv("read_csv_example_sep.csv", delimiter="/") print(df) # a b c # 0 1 20 2 # 1 2 30 3 # 2 3 10 1 ▲目次へ戻る ヘッダー・インデックスの指定デフォルトでは、 ヘッダーには、データの一行目が、 インデックスには、自動で連番が割り当てられます。 ヘッダー行やインデックス列を指定したい場合は、header、index_colを使用します。 デフォルトでは、データの1行目がヘッダーとして扱われて、label名が設定されます。 headerを明示的に指定する場合: header = int ⇒ ヘッダー行をintで指定 header = None ⇒ ヘッダー行なし(自動で連番を振る)を指定することができます。 次のような、ヘッダー行が重複しているデータを例にします。 # Num_A,Num_B,Num_C # a,b,c # 1,20,2 # 2,30,3 # 3,10,1headerを指定しない場合、2つめのヘッダー行がデータとして認識されてしまいます。 df = pd.read_csv("read_csv_example_header.csv") print(df) # Num_A Num_B Num_C # 0 a b c # 1 1 20 2 # 2 2 30 3 # 3 3 10 1headerを指定して、1行目をヘッダーに設定してみます。 df = pd.read_csv("read_csv_example_header.csv", header = 1) print(df) # a b c # 0 1 20 2 # 1 2 30 3 # 2 3 10 1headerで指定した行より上は読み飛ばされる点に注意しましょう。 header=Noneとすると、ヘッダー行はないものとして扱われ、自動で連番が振られます。 df = pd.read_csv("read_csv_example_header.csv", header = None) print(df) # 0 1 2 # 0 Num_A Num_B Num_C # 1 a b c # 2 1 20 2 # 3 2 30 3 # 4 3 10 1 ▲目次へ戻る names:列名を自分で設定namesにlabel名のリストなどを渡すことで、label名を別途指定できます。 ヘッダー行がない場合には、namesでlabel名を追加するだけでOKです。 # 1,20,2 # 2,30,3 # 3,10,1label名をnamseで別途指定してみましょう。 df = pd.read_csv("read_csv_example_no_header.csv", names=["Apple", "Banana", "Carrot"]) print(df) # Apple Banana Carrot # 0 1 20 2 # 1 2 30 3 # 2 3 10 1ヘッダー行がある場合には、headerを指定後、labelで上書きします。 # a,b,c # 1,20,2 # 2,30,3 # 3,10,1headerでヘッダーの行番号を指定、namseでlabel名を上書きしてみます。 df = pd.read_csv("read_csv_example.csv", header = 0, names=["Apple", "Banana", "Carrot"]) print(df) # Apple Banana Carrot # 0 1 20 2 # 1 2 30 3 # 2 3 10 1ヘッダー行の指定を忘れると、csvファイルのヘッダーが不要なデータとして含まれてしまいます。 df = pd.read_csv("read_csv_example.csv", names=["Apple", "Banana", "Carrot"]) print(df) # Apple Banana Carrot # 0 a b c ←CSVのもともとのヘッダーがデータとして読まれてしまった # 1 1 20 2 # 2 2 30 3 # 3 3 10 1headerの指定を忘れないように注意しましょう! ▲目次へ戻る index_col:インデックス列の指定デフォルトでは、インデックスには連番が振られます。 index_colを指定すると、指定した列をもとにindex名が振られます。 index_colは 列の番号 列のラベル名のいずれかで指定します。 次のデータを例に、index_colを指定してみます。 # Place,a,b,c # Tokyo,1,20,2 # Osaka,2,30,3 # Chiba,3,10,1"Place"の列をインデックスに指定してみましょう。 # 列番号で指定 df = pd.read_csv("read_csv_example_index.csv", index_col=0) print(df) # a b c # Place # Tokyo 1 20 2 # Osaka 2 30 3 # Chiba 3 10 1 # ラベル名で指定 df = pd.read_csv("read_csv_example_index.csv", index_col="Place") print(df) # a b c # Place # Tokyo 1 20 2 # Osaka 2 30 3 # Chiba 3 10 1列の番号、ラベル名どちらを使用しても、"Place"の列をインデックスに指定できました。 ▲目次へ戻る 読み込む行・列の指定csvに不要なデータが含まれている場合には、 行をスキップ:skiprows, skip_footer 読み込む列を指定:usecols コメント行のスキップ:commentすることで、必要なデータのみを読み込むことができます。 渡す引数によって、行の飛ばし方が異なります。 skiprows = int:上部からint行分読み飛ばす skiprows = [n, m, l, …]:リストで指定した番号の行を読み飛ばす以下のデータで、それぞれの実行例を確認していきます。 # a,b,c # 1,20,2 # 2,30,3 # 3,10,1 # 4,50,2 # 5,40,1まず、skiprows = intで、データ上部からint行分読み飛ばしてみます。 df = pd.read_csv("read_csv_example_skip.csv", skiprows=3, header=None) print(df) # 0 1 2 # 0 3 10 1 # 1 4 50 2 # 2 5 40 1この例では、始めの3行を読み飛ばしています。 ヘッダー行も読み飛ばされてしまうため、header=Noneを指定しました。 このように、ヘッダー行も読み飛ばされてしまう可能性がある点に注意しましょう。 次にskiprows = [n, m, l, …]で、指定した複数の行を読み飛ばしてみます。 df = pd.read_csv("read_csv_example_skip.csv", skiprows=[1,3]) print(df) # a b c # 0 2 30 3 # 1 4 50 2 # 2 5 40 11行目と3行目を読み飛ばしていますね。 このようにskiprowsはintを与えるかリストを与えるかで挙動が異なるので注意しましょう! ▲目次へ戻る skipfooter:下から数行を読み飛ばすintを指定して、データ下部から読み飛ばす行数を指定できます。 以下のデータで、実行例を確認してみます。 # a,b,c # 1,20,2 # 2,30,3 # 3,10,1 # 4,50,2 # 5,40,1下から2行分を読み飛ばしてみましょう。 df = pd.read_csv("read_csv_example_skip.csv", skipfooter=2) print(df) # a b c # 0 2 30 3 # 1 4 50 2 # 2 5 40 1下から2行分を読み飛ばすことができました。 ▲目次へ戻る usecols:読み込む列を指定列番号のリストや、列名を与えて読み込む列を指定することができます。 usecol = [n, m,…] ⇒ 読み込む列番号をintで指定 usecol = ["label_1, label_2,…"] ⇒ 読み込む列名を文字列で指定 # a,b,c,d # 1,20,2,100 # 2,30,3,200 # 3,10,1,300列番号、列名を指定する方法で、「a」と「c」の行のみを読み込んでみます。 # usecol = [n, m,…]:列番号をintで指定 df = pd.read_csv("read_csv_example.csv", usecols=[0, 2]) print(df) # a c # 0 1 2 # 1 2 3 # 2 3 1 # usecol = [label_1", "label_2",…] : 列名を文字列で指定 df = pd.read_csv("read_csv_example.csv", usecols=["a", "c"]) print(df) # a c # 0 1 2 # 1 2 3 # 2 3 1列名、列番号をそれぞれ指定して、読み込む列を指定することができました。 ここで注意したいのが、 skiprows:読み飛ばす行を指定 usecols:読み込む列を指定という点に注意しましょう。 ▲目次へ戻る comment:コメント行をスキップcsv内に特定の文字から始まるコメント行がある場合には、commentを指定することで読み飛ばすことができます。 例えば、「*」から始まるコメント行があるcsvを考えてみます。 a,b,c 1,20,2 2,30,3 *comment line 3,10,1 *comment line2この例の場合、comment="*"とすると、「*」から始まる行を読み飛ばすことができます。 df = pd.read_csv("read_csv_example.csv", comment="*") print(df) # a b c # 0 1 20 2 # 1 2 30 3 # 2 3 10 1「*」から始まるコメント行を読み飛ばせました。 ▲目次へ戻る おわりにpandasで、csvファイルを読み込む関数read_csv()を解説しました。 read_csv()は引数で読み込みの細かい設定が可能: sep, delimiter:区切り文字の指定 haeder, index_col:ヘッダー行やインデックス列の指定 skiprows, skipfooter, usecols:読み込む行・列の指定 comment:コメント行のスキップcsvファイルではなく、excelファイルを読み込みたい場合は、read_excel()を使用します。 こちらの記事を参照してください。 pandas | read_excel() 図解で細かな設定解説!関数の使い方・使い分けは、手を動かしながら演習すると自然と身につきます! 実務でデータを取り扱っている方はそれを使用しながら、そうでない方はデータ分析の参考書を使用しながら勉強されるのがおススメです。 私の場合は、両方で勉強していましたが、参考書としては特に次のものがおススメでした。 ![]() Python実践データ分析100本ノック 作者:下山輝昌,松田雄馬,三木孝行 発売日: 2019/10/31 メディア: Kindle版【追記】この本のレビューも書いてみました↓↓! 【レビュー】Python実践データ分析100本ノック|100本終えたらpandasが好きになっていたTwitter@YutaKaでは、ほぼ毎日pythonに関する情報を発信しています。 気楽にツイートしているので、気軽にフォローしてください! |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |